package gim_client

import (
	"fmt"
	"github.com/sirupsen/logrus"
	"gopkg.in/natefinch/lumberjack.v2"
	"time"
)

var Logger *logrus.Logger

func InitLog(path string) (logger *logrus.Logger) {

	logger = logrus.New()
	logger.SetLevel(logrus.InfoLevel)
	logger.AddHook(NewLogContextHook())          // 打印文件名称行号钩子
	logger.SetFormatter(&logrus.JSONFormatter{}) // json格式输出日志
	logger.SetOutput(&lumberjack.Logger{
		Filename:   getLogFilename(path), // 日志文件路径
		MaxSize:    100,                  // 单个日志文件最大多少M
		MaxBackups: 100,                  // 日志文件最多保留数量
		MaxAge:     1,                    // 旧文件保留最大天数
		Compress:   false,                // 是否开启日志文件压缩
	})
	// 设置日志文件名为带有日期后缀的格式
	Logger = logger
	return
}

// 获取带有日期后缀的日志文件名（精确到毫秒）
func getLogFilename(path string) string {
	ext := ".log"
	now := time.Now()
	dateSuffix := now.Format("2006-01-02_15-04-05") // 使用 "2006-01-02_15-04-05.000" 格式化字符串作为日期后缀
	return fmt.Sprintf("%s.%s%s", path, dateSuffix, ext)
}
